In addition to containing the address of a variable, pointers may contain the address of a function. This is a rather confusing notion; nonetheless function pointers find uses in certain applications.
Function pointers are declared in a manner similar to a function prototype declaration. For example, a pointer to a function which returns a float and accepts one float and one int argument would be declared as follows:
float (*func_ptr)(float,int);
(In pre-ANSI C, the types of the arguments would be omitted from this declaration.) The parentheses surrounding '*func_ptr' are required; otherwise this becomes a function prototype for a function returning a float pointer.
Since functions identifiers may not themselves be passed as arguments to other functions, function pointers are often used for this purpose. The called function declares one of its formal parameters to be a function pointer. A function pointed to by a function pointer is called by using the '*' ("that which is pointed to by") operator